//
//  L0PlugSuitRegistry.h
//  PlugSuit
//
//  Created by ∞ on 10/3/07.
//  Copyright 2007 __MyCompanyName__. All rights reserved.
//

#import <Cocoa/Cocoa.h>


@interface L0PlugSuitRegistry : NSObject {

}

+ (void) install;
+ (NSArray*) registries;
+ (BOOL) plugInsExistFor:(NSBundle*) app processID:(pid_t) pid;
+ (void) updateRegistries;
+ (void) loadPlugIns;
+ (NSDictionary*) registeredPlugIns;

- (BOOL) plugInsExistFor:(NSBundle*) app processID:(pid_t) pid;
- (void) updateRegistry;
- (NSDictionary*) registeredPlugIns;

- (NSArray*) versionTooHighOnLastLoad;
- (NSArray*) versionTooLowOnLastLoad;
- (NSArray*) incompatibleOnLastLoad;

+ (NSArray*) versionTooHighOnLastLoad;
+ (NSArray*) versionTooLowOnLastLoad;
+ (NSArray*) incompatibleOnLastLoad;

+ (void) disable:(NSBundle*) bundle shouldAutoEnableOnVersionChange:(BOOL) autoEnable;
+ (void) enable:(NSBundle*) bundle;
+ (NSDictionary*) disabledPlugInsDictionary;
+ (void) clearDisabledPlugInsCache;
+ (NSDictionary*) updatedDisabledPlugInsDictionary;
+ (NSMutableDictionary*) disabledPlugInsMutableDictionary;
+ (void) setDisabledPlugInsDictionary:(NSDictionary*) dict;
+ (BOOL) isEnabled:(NSBundle*) bundle;

+ (id) sharedInstance;

- (void) handleErrorsForPlugInsVersionTooHigh:(NSArray*) high versionTooLow:(NSArray*) low incompatible:(NSArray*) incom;
- (NSString*) dottedListForPlugIns:(NSArray*) arr;
- (NSString*) userVisibleNameOfBundle:(NSBundle*) bundle;
- (NSString*) dottedListWithReasonsWithVersionTooHigh:(NSArray*) high
										versionTooLow:(NSArray*) low
										 incompatible:(NSArray*) incom;
- (void) presentVersionTooHighForPlugIns:(NSArray*) arr;
- (void) presentVersionTooLowForPlugIns:(NSArray*) arr;
- (void) presentIncompatibleForPlugIns:(NSArray*) arr;
- (void) presentErrorsForVersionTooHigh:(NSArray*) high versionTooLow:(NSArray*) low incompatible:(NSArray*) incom;
- (void) presentVersionTooHighForPlugIn:(NSBundle*) plugIn;
- (void) presentVersionTooLowForPlugIn:(NSBundle*) plugIn;
- (void) presentIncompatibleForPlugIn:(NSBundle*) plugIn;

- (NSBundle*) plugSuitBundle;
- (NSString*) localizedString:(NSString*) entry;

@end
